<?php
namespace app\api\controller\m2979;

use app\api\controller\Base;
use service\ApiReturn;

/**
 * 图片上传接口
 * @package app\api\controller\v1
 */
class Upload extends Base
{
    use \app\common\traits\controller\Upload;

    //继承中间件

    /**
     * 上传图片
     * @param $data
     * @param array $user
     * @return \think\response\Json
     */
    public function upload_img($data, $user = [])
    {
        $dir = $data['dir'] ?? 'images';
        $from = "";
        $module = $data['module'] ?? 'user';
        $name = 'file';//表单FILE名称
        if (empty($_FILES['file'])) {
            return ApiReturn::r(lang('未获取上传文件，请检查是否开启相册权限'));
        }
        // 临时取消执行时间限制
        set_time_limit(0);
        try {
            config('upload_image_size', 1024 * 20);//限制大小为2M
            $infos = $this->saveFilesTo($dir, $module, $name);
            $arr = [];
            foreach ($infos as $info) {
                $arr[] = [
                    'id' => $info['id'],
                    'path' => $this->_getFileUrl($info['path']),
                    'thumb' => $this->_getFileUrl($info['thumb'])
                ];
            }
        } catch (\Exception $e) {
            return ApiReturn::r(0, [], $e->getMessage());
        }
        return ApiReturn::r(1, $arr, lang('上传成功'));
    }

    /**
     *创建层级目录
     * */
    private function mkdirs_2($path)
    {
        if (!is_dir($path)) {
            self::mkdirs_2(dirname($path));
            if (!mkdir($path, 0777)) {
                return false;
            }
        }
        return true;
    }

    /**
     * 图片流保存文件
     * @param $data
     * @param array $user
     * @return \think\response\Json
     * @since 2020/8/01 11:30
     * @author jxy [ 415782189@qq.com ]
     */
    public function pictureStream($data, $user = [])
    {
        //此方案因安全问题 已被废弃

//        $dir = $data['dir'] ? $data['dir'] : 'qrcode';  // 保存的目录:images
//        $data['filename'] = isset($data['filename']) ? $data['filename'] : '';
//        $path = ROOT_PATH . config('upload_path') . $dir . '/' . date('Ymd');
//        if (!is_dir($path)) {
//            self::mkdirs_2($path, 0777);
//        }
//        $filename = time() . rand(1000, 9999) . ".png";
//        $new_file = $path . '/' . $filename;
//        if (file_put_contents($new_file, $data['pictureStream'])) {
//            return config('web_site_domain') . '/uploads/' . $dir . '/' . date('Ymd') . '/' . $filename;
//        } else {
//            return false;
//        }
    }

    /**
     * 上传文件到oss
     * 此接口后续逐渐废弃
     * 请使用直传接口aliyun/get_oss_sign获取签名后直传
     * @edit 晓风<215628355@qq.com>
     * @date 2021年7月18日10:30:04 修改备注，移除多余的alioss插件，但这不是最终解决方案
     * @return type
     */
    public function uploadFileOss()
    {
        // 临时取消执行时间限制
        set_time_limit(0);
        try {
            config('upload_image_size', 20480);//限制大小为20M
            $info = $this->saveFileTo("file", "api", "file");
            $result = array();
            $result['success'] = '上传成功AliOss';
            $result['data']['file'] = $info['path'];
            $result['data']['fileId'] = $info['id'];
        } catch (\Exception $e) {
            return ApiReturn::r(0, [], $e->getMessage());
        }
        return ApiReturn::r(1, $result, "ok");
    }

    /**
     * 上传文件到oss
     * 此接口后续逐渐废弃
     * 请使用直传接口aliyun/get_oss_sign获取签名后直传
     * 富文本上传视频到oss
     * @edit chenchen
     * @date 2021年7月18日10:30:04 修改备注，移除多余的alioss插件 ，但这不是最终解决方案
     */
    public function editorVideoOss()
    {
        // 临时取消执行时间限制
        set_time_limit(0);
        try {
            config('upload_image_size', 20480);//限制大小为20M
            $info = $this->saveFileTo("file", "api", "file");
            $result = array();
            $result['errno'] = 0;
            $result['data']['url'] = $info['path'];
        } catch (\Exception $e) {
            return json(["error" => 1]);
        }
        return json($result);
    }
}
